package 剑指offer;

public class _44数字序列中某一位的数字 {
		/**
		 * 
		 *@time 2021年3月19日上午8:15:57
		 * 
		 *@param n
		 *@return int
		 *设置位数为digit
		 *						数字范围	数位数  数字数量    数位数量
		 *@see该题的步骤：①确定n的位数（0~9     1		9		9） ② 确定n的数字 num ③确定 n所在num是哪位 
		 						（10~99    2		90		180）
		 						(start~end   digit  9*start       9*start*digit      	)
		 得出结论：digit=digit+1
		 		start=start*10
		 		count =9*start*digit
		 ②确定n的数字num = (n-2)/digit
		 ③确定所在的 num数字的位数 (n-1)%digit
		 
		 						*/
	  public int findNthDigit(int n) {
		  int digit = 1;
		  long start = 1;
		  long count = 9;
		  //确定n的位数
		  while(n > count) {
			  n -= count;
			  digit += 1;
			  start *=10;
			  count = 9*start*digit; 
		  }
		  //确定 num的值
		  Long num= start+(n-1)/digit;
		  //确定n所在位置的数字
		  int location = (n-1)%digit;
		  int res = num.toString().charAt(location)-'0';
		  return res;
	    }

}
